/**
  SUNNY Project, Anyang Normal University, IMP-CAS
	\class TASPState
	\brief Single particle state for a one-body Hamiltonian with a central force.
	Labeled by n, l, j and mj. Used as a building basis for configuration
	interaction calculations in quantum many-body problems.
	\author SUN Yazhou, asia.rabbit@163.com
	\since 2020/01/31
	\date Last modified: 2020/01/31 by SUN Yazhou
	\copyright 2020-2022, SUN Yazhou
	\copyright SUNNY project, Anyang Normal University, IMP-CAS
*/

#ifndef _TASPState_h_
#define _TASPState_h_

class TASPState{
public:
	TASPState(int index, int n, int l, int _2j, int _2mj, int _2tz, double energy);
	virtual ~TASPState();
	int GetN() const{ return fn; } ///< \retval the number of nodes
	int n() const{ return fn; } ///< \retval the number of nodes
	int Getl() const{ return fl; } ///< \return fl
	int l() const{ return fl; } ///< \return fl
	bool Parity() const; ///< parity
	bool pi() const{ return Parity(); } ///< parity
	int Get2j() const{ return f2j; } ///< \return f2j
	double j() const{ return f2j / 2.; } ///< \return j
	int Get2Mj() const{ return f2mj; } ///< \return 2*mj
	double mj() const{ return f2mj / 2.; } ///< \return 2*mj
	int Get2Tz() const{ return f2tz; } ///< \return 2*tz
	double tz() const{ return f2tz / 2.; } ///< \return 2*tz
	double GetEnergy() const{ return fEnergy; }
	double e() const{ return fEnergy; }
	void Print() const; ///< print the single particle state

protected:
	int fIndex; ///< index of the single particle state
	int fn; ///< number of nodes (zero-points) for the radial functiion
	int fl; ///< orbital angular momentum number
	int f2j; ///< angular momentum number*2
	int f2mj; ///< the third component jz*2
	int f2tz; ///< the third component of isospin
	double fEnergy; ///< the energy of the single-particle state
};

#endif
